using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;

namespace PrintBarcode
{

    public partial class printbarcode1 : UTLBASEFORM.MDICHILD
    {
        DataTable data;
        TProduct1 tProduct = new TProduct1();
        //BarTender.ApplicationClass btapp;
        //BarTender.Format btformat;
        //BarTender.Messages btMasgs;

   

        public printbarcode1()
        {
            InitializeComponent();
        }
        
        private void printbarcode1_Load(object sender, EventArgs e)
        {            
            setupMenu();
            LoadProduct();
        }
        
        private void InTem(DataTable dtSource)
        {

            //try
            //{
            //    if (dtSource == null)
            //    {
            //        return;
            //    }
                //WaitForInfoPathToEnd();
                //object btObject = Marshal.GetActiveObject("BarTender.Application");
                //btapp =new BarTender.ApplicationClass();
                    // btObject as BarTender.Application;
                

                
                //Microsoft XPS Document Writer
                //Datamax E-4203             

            //    if (lvProduct.SelectedIndices.Count > 0)
            //    {
            //        for (int i = 0; i < lvProduct.SelectedIndices.Count; i++)
            //        {
            //            btformat = btapp.Formats.Open(Application.StartupPath + "\\BarcodeTemplate.btw", false, "Datamax E-4203");
            //            btformat.SetNamedSubStringValue("barcode1", dtSource.Rows[lvProduct.SelectedIndices[i]]["Barcode"].ToString().Trim());
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T11"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T11", dtSource.Rows[lvProduct.SelectedIndices[i]]["T11"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T11", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T21"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T21", dtSource.Rows[lvProduct.SelectedIndices[i]]["T21"].ToString().Trim());
            //            }
            //            else 
            //            {
            //                btformat.SetNamedSubStringValue("T21", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T31"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T31", dtSource.Rows[lvProduct.SelectedIndices[i]]["T31"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T31","  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T41"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T41", dtSource.Rows[lvProduct.SelectedIndices[i]]["T41"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T41", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T51"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T51", dtSource.Rows[lvProduct.SelectedIndices[i]]["T51"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T51", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T12"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T12", dtSource.Rows[lvProduct.SelectedIndices[i]]["T12"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T12","  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T22"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T22", dtSource.Rows[lvProduct.SelectedIndices[i]]["T22"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T22", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T32"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T32", dtSource.Rows[lvProduct.SelectedIndices[i]]["T32"].ToString().Trim());
            //            }
            //            else 
            //            {
            //                btformat.SetNamedSubStringValue("T32", " ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T42"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T42", dtSource.Rows[lvProduct.SelectedIndices[i]]["T42"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T42", "  ");
            //            }
            //            if (dtSource.Rows[lvProduct.SelectedIndices[i]]["T52"].ToString().Trim() != string.Empty)
            //            {
            //                btformat.SetNamedSubStringValue("T52", dtSource.Rows[lvProduct.SelectedIndices[i]]["T52"].ToString().Trim());
            //            }
            //            else
            //            {
            //                btformat.SetNamedSubStringValue("T52", "  ");
            //            }
                
            //            btformat.Print("barcode1", true, -1, out btMasgs);
            //            btformat.Close(BarTender.BtSaveOptions.btDoNotSaveChanges);
            //            UpdatePr(dtSource.Rows[lvProduct.SelectedIndices[i]]["Barcode"].ToString().Trim());
            //        }
            //    }
            //    LoadProduct();
            //    btapp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
            //    Marshal.ReleaseComObject(btapp);
            //    UTLBASEFORM.CProcess.FindAndKillAllProcess("bartend");
            //}
            //catch(Exception ex)
            //{
            //    if (btapp != null)
            //    {
            //        btapp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
            //        Marshal.ReleaseComObject(btapp);
            //    }
            //    UTLBASEFORM.CProcess.FindAndKillAllProcess("bartend");
            //}
        }
       
        private static void WaitForInfoPathToEnd()
        {
            Process[] processes = Process.GetProcessesByName("bartend");
            if (processes.Length > 0)
            {
                Thread.Sleep(4000);
                WaitForInfoPathToEnd();
            }

        }

        public void LoadProduct()
        {
            lvProduct.Items.Clear();
            BUS.TStampAll tStamp = new BUS.TStampAll();
            data = tStamp.GetStamp();

            for (int i = 0; i < data.Rows.Count; i++)
            {
                int stt = i + 1;
                ListViewItem item = new ListViewItem(stt.ToString());

                lvProduct.Items.Add(item);

                item.SubItems.Add(data.Rows[i]["NamePr"].ToString());
                item.SubItems.Add(data.Rows[i]["Barcode"].ToString());
                item.SubItems.Add(data.Rows[i]["Weight"].ToString());

                item.SubItems.Add(data.Rows[i]["GoldType"].ToString());
                item.SubItems.Add(data.Rows[i]["NameUnit"].ToString().Trim());
                item.SubItems.Add(data.Rows[i]["CreateDate"].ToString());
                item.SubItems.Add(data.Rows[i]["ID"].ToString());
                SetDefaultColorList(lvProduct);
            }
        }
        //private void hienthi(string sid)
        //{
        //    string localPath = Application.StartupPath;
        //    string cc = @"..\..\reports\rptprintbarcode.rpt";
        //    rptAllCustomersOrders.Load(cc);
        //    //rptAllCustomersOrders.Load("rpt_report_kd.rpt");
        //    ReportDAO rpt = new ReportDAO();

        //    rpt.kenoi(rptAllCustomersOrders);

        //    CrystalDecisions.Shared.ParameterDiscreteValue pdvCustomerName1 = new CrystalDecisions.Shared.ParameterDiscreteValue();
        //    //CrystalDecisions.Shared.ParameterDiscreteValue pdvCustomerName2 = new CrystalDecisions.Shared.ParameterDiscreteValue();

        //    CrystalDecisions.Shared.ParameterValues pvCollection1 = new CrystalDecisions.Shared.ParameterValues();
        //    //CrystalDecisions.Shared.ParameterValues pvCollection2 = new CrystalDecisions.Shared.ParameterValues();

        //    pdvCustomerName1.Value = sid;
        //    //pdvCustomerName2.Value = dateTimePicker1.Value.Year;

        //    // Add it to the parameter collection.


        //    pvCollection1.Add(pdvCustomerName1);
        //    // pvCollection2.Add(pdvCustomerName2);

        //    // Apply the current parameter values.

        //    rptAllCustomersOrders.DataDefinition.ParameterFields["@sid"].ApplyCurrentValues(pvCollection1);
        //    //rptAllCustomersOrders.DataDefinition.ParameterFields["@year"].ApplyCurrentValues(pvCollection2);

        //    // Hide group tree for this report


        //    //crystalReportViewer1.ReportSource = rptAllCustomersOrders;

        //    //            crystalReportViewer1.Refresh();
        //    //          crystalReportViewer1.Zoom(1);


        //}
        private void setupMenu()
        {
            ShowBTN1("In Tem", "");
            //ShowBTN2("In", "");
            // ShowBTN3("Lam Lai", "");
        }
        public override void btn1_Click(object sender, EventArgs e)
        {

            PrintStamp();
        }
        public override void btn2_Click(object sender, EventArgs e)
        {

        }
        public override void btn3_Click(object sender, EventArgs e)
        {
            //UpdatePr();
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            PrintStamp();

        }
        public void PrintStamp()
        {
            BUS.TStampAll tStamp = new BUS.TStampAll();
            DataSet ds = new DataSet();
            DataTable dt = tStamp.SetData();
            ds.Tables.Add(dt);
            //rptStampAll rpt = new rptStampAll();
            InTem(ds.Tables[0]);


        }
        public void UpdatePr(string bar)
        {
            BUS.TStampAll tStamp = new BUS.TStampAll();
                tStamp.UpdateProduct(bar,1);
        }
    }
}

